#include <iostream>
#include <unistd.h>
#include <pthread.h>


using namespace std;

void* run(void* arg){
    int cnt = 3;
    while(cnt--){
        cout<<"我是子线程："<<(char*)arg<<endl;
        sleep(1);
    }
    pthread_exit(arg);
}

int main(){
    pthread_t pth[5];
    void* ret;
    for(int i = 1;i<=5;++i){
        char* name = new char[64];
        snprintf(name,64,"pthread%d",i);
        pthread_create(&pth[i-1],nullptr,run,name);
    }
    int cnt = 1;
    for(int i = 1;i<=5;++i){
        
        if(pthread_join(pth[i-1],&ret)!=0){
            perror("等待失败");
            exit(1);
        }else{
            cout<<"成功等待线程:"<<(char*)ret<<endl;
        }
        sleep(1);
    }
}














// #include <iostream>
// #include <unistd.h>
// #include <pthread.h>


// using namespace std;

// void* run(void* arg){
//     int cnt = 3;
//     while(cnt--){
//         cout<<"我是子线程："<<(char*)arg<<endl;
//         sleep(1);
//     }
//     delete[] (char*)arg;
//     return nullptr;
// }

// int main(){
//     pthread_t pth[5];
//     for(int i = 1;i<=5;++i){
//         char* name = new char[64];
//         snprintf(name,64,"pthread%d",i);
//         pthread_create(&pth[i-1],nullptr,run,name);
//     }
//     int cnt = 1;
//     for(int i = 1;i<=5;++i){
        
//         if(pthread_join(pth[i-1],nullptr)!=0){
//             perror("等待失败");
//             exit(1);
//         }else{
//             printf("成功等待%d个线程\n",cnt++);
//         }
//         sleep(1);
//     }
// }








